//将扁平化的数据转换为树形解构数据的方法
export function transTree(list){
  //入参list：要被转换的扁平化数据

  //为了更好的寻找id，创建一个id和item的映射关系
  const map = {}

  const treeList = []

  list.forEach(item => {
    map[item.id] = item
  })

  list.forEach(item => {
    if (map[item.pid]) {
      //找到了item的父节点
      //map[item.pid]就是item的父节点
      if (!map[item.pid].children) {
        map[item.pid].children = []
      }
      //将孩子放入父节点的children数组中
      map[item.pid].children.push(item)
    } else {
      treeList.push(item)
    }
  })

  //返回值treeList:转换后的树形结构数据
  return treeList
}
export function recurTransTree(list, pid){
  //入参 list：扁平化数据
  //入参 pid： 父 id

  //收集本地递归找到的孩子的数组
  const treeList = []

  list.forEach(item => {
    //1.递归终止条件
    if (item.pid === pid) {
      //如果 item.pid === 传进来的 pid,说明item是pid的孩子
      //2.处理当前层
      treeList.push(item)
      //3.下钻到下一层
      // item.children = recurTransTree(list, item.id)
      const children = recurTransTree(list,item.id)
      if (children.length) {
        //找到孩子后，才设置 children 树形
        item.children = children
      }
    }
  })

  //返回值：找到的所友以 pid 为父节点的孩子数组
  return treeList
}
